package com.xbongbong.pro.statistic.enums;

import lombok.Getter;

import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;

/**
 * lag参数，目前同环比用到
 * @author xinpeng.jiang
 * @version V1.0
 * @date 2021/6/4 10:10
 * @since V1.0
 */
@Getter
public enum LagEnum {
    /**
     * 年同比
     */
    YEAR_YEAR(0, 1),
    /**
     * 季同比
     */
    YEAR_QUARTER(1,  3),
    /**
     * 月同比
     */
    YEAR_MONTH(2,  12),
    // todo: 预留周的位置
    /**
     * 日同比，使用时调getYearMonthDay
     */
    YEAR_MONTH_DAY(4,  365),

    /**
     * 年环比
     */
    CHAIN_YEAR(10, 1),
    /**
     * 季环比
     */
    CHAIN_QUARTER(11,  1),
    /**
     * 月环比
     */
    CHAIN_MONTH(12,  1),
    // todo: 预留周的位置
    /**
     * 日环比
     */
    CHAIN_MONTH_DAY(14,  1),
    ;

    private final Integer code;

    private final Integer value;

    LagEnum(Integer code, Integer value) {
        this.code = code;
        this.value = value;
    }

    /**
     * 日同比桶差值计算，若包含2月29，返回366，否则返回365
     * @param timestamp 时间戳
     * @return java.lang.Integer
     * @author xinpeng.jiang
     * @date 2021/7/7 18:54
     * @version 1.0
     */
    public static long getYearMonthDay(Long timestamp) {
        Date formatDate = new Date(timestamp);
        // 处理传进来的日期
        Calendar newDate = Calendar.getInstance();
        newDate.setTime(formatDate);
        // 获取去年今日
        Calendar oldDate = Calendar.getInstance();
        oldDate.setTime(formatDate);
        oldDate.add(Calendar.YEAR, -1);
        // 计算差值
        return (newDate.getTimeInMillis() - oldDate.getTimeInMillis()) / (1000 * 3600 * 24);
    }
}
